草庐IT

c++ - GLUT 和 C++ 类

全部标签

c++ - 用 c 包装一个 c++ 库? (不要 "extern c")

是否可以将c++库包装到c中?我该怎么做?有现成的工具吗?(需要访问现有的c++库,但只能使用C) 最佳答案 您可以用C编写面向对象的代码,因此如果它是面向对象的C++库,则可以将其包装在C接口(interface)中。然而,这样做可能会非常乏味,尤其是当您需要支持继承、虚函数和诸如此类的东西时。如果C++库采用通用编程(模板),它可能会变得非常棘手(您需要提供所有需要的模板实例)并很快接近不值得这样做的地步。假设它是OO,下面是如何在C中实现OO的基本草图:C++类:classcpp{public:cpp(inti);voidf(

c++ - 具有 C++ 数据结构的 C 代码

我知道这不是开发项目的好方法,但由于我工作的某些原因,我致力于在C项目中集成C++中的一些数据结构(LRU缓存和HashMap)。到目前为止,我知道有一些方法可以使用extern"C"在C++中调用C函数,但是从C调用C++对象(方法...)呢?我正在使用GCC。 最佳答案 如果所有代码都是用C++编译器编译的,应该没有(或很少)问题。如果您使用gcc编译C并使用g++编译C++,那么您需要围绕您的类编写header包装器,以通过一组函数使C++代码可见。例子:我的类.h#ifdef__cplusplusclassMyClass{p

c++ - C/C++ 中单个参数(函数)中的多个参数

好吧,这个标题听起来可能有点含糊,但那是因为我不知道如何用不同的方式来表达它。我将尝试解释我的意思:在某些库中,'init'函数经常接受一些参数,但该参数随后接受多个参数(正确..)。一个例子,就像这样:apiHeader.h#defineAPI_FULLSCREEN0x10003003#defineAPI_NO_DELAY0x10003004#defineAPI_BLAH_BLAH0x10003005主.c:apiInit(0,10,10,2,API_FULLSCREEN|API_NO_DELAY|API_BLAH_BLAH);这是如何运作的?我无法在任何地方找到答案,很可能是因为我

c++ - 使用自动工具从 C++ 使用 C 代码

我正在用一些用C编写的代码编写(我的第一个)C++类,但我只能通过在externblock中声明C函数来编译C++。我的项目使用自动工具;有什么方法可以自动执行此过程,这样我就不必维护两个头文件了吗? 最佳答案 在C代码头文件中的#ifdef中使用externblock头文件开始#ifdef__cplusplusextern"C"{#endif...在头文件的末尾#ifdef__cplusplus}#endif这样它就可以同时包含在C和C++源代码中 关于c++-使用自动工具从C++使用

c++ - 如何在 VS C++ 6.0 中递增枚举?

我复制并粘贴了一些递增枚举的代码:myenum++;这段代码在VS.NETC++2003中编译时运行良好我现在在VS6.0中开发并得到错误:errorC2676:binary'++':'enumID'doesnotdefinethisoperatororaconversiontoatypeacceptabletothepredefinedoperator如何让它在6.0中表现相同? 最佳答案 我认为在一个易于理解的枚举上定义operator++没有任何问题。这不就是运算符重载的目的吗?如果上下文没有意义(例如其中有漏洞的枚举),那么

c++ - C 到 C++ : Transitioning from one language to the other

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:C++tutorialforexperiencedCprogrammer.我经常使用多种语言进行编程,最近一直在使用C++。基本上我的类只是对纯C代码的包装。几乎就像一个带有关联方法的结构。这为我的数据提供了我想要的封装和隐私。我有一个小的类层次结构,几乎没有使用继承。我熟悉面向对象的概念,并且知道当我需要了解这方面的特定概念时可以使用哪些搜索词。然而,正如我在编程世界中的尝试所发现的那样,通常真正有用的语言特性对新手或新手来说是隐藏的,而我需要的有用的部分已经写好了并且在某个地方的库中可以免费使用可用(大多

c++ - 此 C/C++ if() 语句的计算结果是否为 TRUE?

根据PC-lint,以下语句永远不会TRUE:if((variable&0x02)==1)我正在为嵌入式系统使用C编译器,只要设置了variable中的相应位,它就会将其评估为TRUE。我猜编译器正在对==的两侧进行TRUE/FALSE比较,而不是比较结果数字。换句话说,每当表达式(varable&0x02)不为零(即TRUE)时,语句也将为TRUE,因为值1也是TRUE(不是零)。我不知道C/C++标准是否明确定义了编译器在这种情况下的行为方式。有没有C/C++专家可以根据标准(例如C90、C99等)回答这个问题?P.S.:在上面的语句中,“variable”是一个unsignedc

c++ - 在哪里了解 “bit”?

Closed.ThisquestiondoesnotmeetStackOverflowguidelines。它当前不接受答案。想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。上个月关闭。Improvethisquestion我试图找到一些有关位的详细书籍或资源,以便例如将数字(如16)转换为位。我目前是一名高中生,每当阅读编程书籍时,我几乎都能理解所有内容,除了按位运算符部分。我只是不知道它是如何工作的,为什么人们甚至发明bit&byte:(。因此,我希望你们能给我一些资源建议,讨论如何将数字/字符转换为位。 最佳答案

c# - C、C++、Java、C# 中的 main()

在C、C++、Java或C#中,main()(或Main())是用户定义函数还是内置函数? 最佳答案 它是程序执行所必需的用户定义函数。当你用编译语言运行你的程序时,main函数被执行。例如,在Java中,如果你在一个类中有一个签名函数publicstaticvoidmain(String...args)那么这个类就可以被执行,因为JVM将执行main方法。Java示例:publicclassTest{publicstaticvoidmain(String...args){System.out.println("HelloWorld

c++ - 在游戏编程中,导致性能消耗的特定 C++ 或 STL 功能是什么?

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭12年前。我的问题主要是关于STL而不是C++的其余部分,可以比较(我猜)与C一样快,只要类不是在每个角落都使用。STL是游戏和OGRE3D等引擎的标准,但我想知道如果STL的功能很好用,问题是虽然我真的不知道它们是如何工作的,但我应该首先知道哪些功能会导致严重的问题在使用它们之前先检查pig。我很高兴开始那所游戏编程学校,显然我不可能不使用这些高级功能。